﻿/************************************************************************
** 文  件：
**	BaseCmd.h
** 功  能：
**	websocket基础控制命令
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <memory>

// 命令类型
typedef enum
{
	// 系统配置
	SC_CMD_REBOOT = 0,
	SC_CMD_GET_CONFIG = 1,
	SC_CMD_SET_CONFIG = 2,
	// 系统模型
	SC_CMD_ADD_MODEL = 10,
	SC_CMD_SET_MODEL = 11,
	SC_CMD_DEL_MODEL = 12,
	// 系统设备
	SC_CMD_ADD_DEVICE = 20,
	SC_CMD_SET_DEVICE = 21,
	SC_CMD_DEL_DEVICE = 22,
	// 系统场景
	SC_CMD_ADD_SCENE = 25,
	SC_CMD_SET_SCENE = 26,
	SC_CMD_DEL_SCENE = 27,
	// 视频功能
	SC_CMD_PLAY_VIDEO = 30,
	SC_CMD_STOP_VIDEO = 31,
	SC_CMD_RMOTE_CAP = 32,
	SC_CMD_START_REC = 33,
	SC_CMD_STOP_REC = 34,
	// 移除盒子
	SC_CMD_REMOVE_BOX = 40
}SOCKET_CMD;

class BaseCmd
{
public:
	BaseCmd();
	virtual ~BaseCmd();

public:
	std::string GetId();
	void SetId(std::string);

	std::string GetBoxId();
	void SetBoxId(std::string);

	int GetCmd();
	void SetCmd(int);

	virtual bool Parse(std::string);

protected:
	// 命令编码
	std::string m_id = "";
	// 盒子编码
	std::string m_boxId = "";
	// 命令类型
	int m_cmd = -1;
};

typedef std::shared_ptr<BaseCmd> BaseCmdPtr;